// noinspection JSUnresolvedReference
/**
* Field Google Map
*/
/* global jQuery, document, redux_change, redux, google */
(function ( $ ) {
'use strict';
redux.field_objects = redux.field_objects || {};
redux.field_objects.google_maps = redux.field_objects.google_maps || {};
/* LIBRARY INIT */
redux.field_objects.google_maps.init = function ( selector ) {
if ( ! selector ) {
selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' );
}
$( selector ).each(
function ( i ) {
let delayRender;
const el = $( this );
let parent = el;
if ( ! el.hasClass( 'redux-field-container' ) ) {
parent = el.parents( '.redux-field-container:first' );
}
if ( parent.is( ':hidden' ) ) {
return;
}
if ( parent.hasClass( 'redux-field-init' ) ) {
parent.removeClass( 'redux-field-init' );
} else {
return;
}
// Check for delay render, which is useful for calling a map
// render after JavaScript load.
delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) );
// API Key button.
redux.field_objects.google_maps.clickHandler( el );
// Init our maps.
redux.field_objects.google_maps.initMap( el, i, delayRender );
}
);
};
/* INIT MAP FUNCTION */
redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) {
let delayed;
let scrollWheel;
let streetView;
let mapType;
let address;
let defLat;
let defLong;
let defaultZoom;
let mapOptions;
let geocoder;
let g_autoComplete;
let g_LatLng;
let g_map;
let noLatLng = false;
// Pull the map class.
const mapClass = el.find( '.redux_framework_google_maps' );
const containerID = mapClass.attr( 'id' );
const autocomplete = containerID + '_autocomplete';
const canvas = containerID + '_map_canvas';
const canvasId = $( '#' + canvas );
const latitude = containerID + '_latitude';
const longitude = containerID + '_longitude';
// Add map index to data attr.
// Why, say we want to use delay_render,
// and want to init the map later on.
// You'd need the index number in the
// event of multiple map instances.
// This allows one to retrieve it
// later.
$( mapClass ).attr( 'data-idx', idx );
if ( true === delayRender ) {
return;
}
// Map has been rendered, no need to process again.
if ( $( '#' + containerID ).hasClass( 'rendered' ) ) {
return;
}
// If a map is set to delay render and has been initiated
// from another scrip, add the 'render' class so rendering
// does not occur.
// It messes things up.
delayed = Boolean( mapClass.data( 'delay-render' ) );
if ( true === delayed ) {
mapClass.addClass( 'rendered' );
}
// Create the autocomplete object, restricting the search
// to geographical location types.
g_autoComplete = await google.maps.importLibrary( 'places' );
g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} );
// Data bindings.
scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) );
streetView = Boolean( mapClass.data( 'street-view' ) );
mapType = Boolean( mapClass.data( 'map-type' ) );
address = mapClass.data( 'address' );
address = decodeURIComponent( address );
address = address.trim();
// Set default Lat/lng.
defLat = canvasId.data( 'default-lat' );
defLong = canvasId.data( 'default-long' );
defaultZoom = canvasId.data( 'default-zoom' );
// Eval whether to set maps based on lat/lng or address.
if ( '' !== address ) {
if ( '' === defLat || '' === defLong ) {
noLatLng = true;
}
} else {
noLatLng = false;
}
// Can't have empty values, or the map API will complain.
// Set default for the middle of the United States.
defLat = defLat ? defLat : 39.11676722061108;
defLong = defLong ? defLong : -100.47761000000003;
if ( noLatLng ) {
// If displaying a map based on an address.
geocoder = new google.maps.Geocoder();
// Set up Geocode and pass address.
geocoder.geocode(
{'address': address},
function ( results, status ) {
let latitude;
let longitude;
// Function results.
if ( status === google.maps.GeocoderStatus.OK ) {
// A good address was passed.
g_LatLng = results[0].geometry.location;
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom,
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
// Get and set lat/long data.
latitude = el.find( '#' + containerID + '_latitude' );
latitude.val( results[0].geometry.location.lat() );
longitude = el.find( '#' + containerID + '_longitude' );
longitude.val( results[0].geometry.location.lng() );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
} else {
// No data found, alert the user.
alert( 'Geocode was not successful for the following reason: ' + status );
}
}
);
} else {
// If displaying map based on an lat/lng.
g_LatLng = new google.maps.LatLng( defLat, defLong );
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom, // Start off far unless an item is selected, set by php.
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create the map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
}
};
redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) {
let markerTooltip;
let infoWindow;
let g_marker;
let geoAlert = mapClass.data( 'geo-alert' );
// Get HTML.
const input = document.getElementById( autocomplete );
// Set objects into the map.
g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input );
// Bind objects to the map.
g_autoComplete = new google.maps.places.Autocomplete( input );
g_autoComplete.bindTo( 'bounds', g_map );
// Get the marker tooltip data.
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Create infoWindow.
infoWindow = new google.maps.InfoWindow();
// Create marker.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
draggable: true,
title: markerTooltip,
animation: google.maps.Animation.DROP
}
);
geoAlert = decodeURIComponent( geoAlert );
// Place change.
google.maps.event.addListener(
g_autoComplete,
'place_changed',
function () {
let place;
let address;
let markerTooltip;
infoWindow.close();
// Get place data.
place = g_autoComplete.getPlace();
// Display alert if something went wrong.
if ( ! place.geometry ) {
window.alert( geoAlert );
return;
}
console.log( place.geometry.viewport );
// If the place has a geometry, then present it on a map.
if ( place.geometry.viewport ) {
g_map.fitBounds( place.geometry.viewport );
} else {
g_map.setCenter( place.geometry.location );
g_map.setZoom( 17 ); // Why 17? Because it looks good.
}
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Set the marker icon.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
title: markerTooltip,
clickable: true,
draggable: true,
animation: google.maps.Animation.DROP
}
);
// Set marker position and display.
g_marker.setPosition( place.geometry.location );
g_marker.setVisible( true );
// Form array of address components.
address = '';
if ( place.address_components ) {
address = [( place.address_components[0] && place.address_components[0].short_name || '' ),
( place.address_components[1] && place.address_components[1].short_name || '' ),
( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' );
}
// Set the default marker info window with address data.
infoWindow.setContent( '
' + place.name + ' ' + address );
infoWindow.open( g_map, g_marker );
// Run Geolocation.
redux.field_objects.google_maps.geoLocate( g_autoComplete );
// Fill in address inputs.
redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete );
}
);
// Marker drag.
google.maps.event.addListener(
g_marker,
'drag',
function ( event ) {
document.getElementById( latitude ).value = event.latLng.lat();
document.getElementById( longitude ).value = event.latLng.lng();
}
);
// End marker drag.
google.maps.event.addListener(
g_marker,
'dragend',
function () {
redux_change( el.find( '.redux_framework_google_maps' ) );
}
);
// Zoom Changed.
g_map.addListener(
'zoom_changed',
function () {
el.find( '.google_m_zoom_input' ).val( g_map.getZoom() );
}
);
// Marker Info Window.
infoWindow = new google.maps.InfoWindow();
google.maps.event.addListener(
g_marker,
'click',
function () {
const marker_info = containerID + '_marker_info';
const infoValue = document.getElementById( marker_info ).value;
if ( '' !== infoValue ) {
infoWindow.setContent( infoValue );
infoWindow.open( g_map, g_marker );
}
}
);
};
/* FILL IN ADDRESS FUNCTION */
redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) {
// Set variables.
const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' );
// What if someone only wants city, or state, ect...
// gotta do it this way to check for the address!
// Need to check each of the returned components to see what is returned.
const componentForm = {
street_number: 'short_name',
route: 'long_name',
locality: 'long_name',
administrative_area_level_1: 'short_name',
country: 'long_name',
postal_code: 'short_name'
};
// Get the place details from the autocomplete object.
const place = g_autoComplete.getPlace();
let component;
let i;
let addressType;
let _d_addressType;
let val;
let len;
document.getElementById( latitude ).value = place.geometry.location.lat();
document.getElementById( longitude ).value = place.geometry.location.lng();
for ( component in componentForm ) {
if ( componentForm.hasOwnProperty( component ) ) {
// Push in the dynamic form element ID again.
component = containerID + '_' + component;
// Assign to proper place.
document.getElementById( component ).value = '';
document.getElementById( component ).disabled = false;
}
}
// Get each component of the address from the place details
// and fill the corresponding field on the form.
len = place.address_components.length;
for ( i = 0; i < len; i += 1 ) {
addressType = place.address_components[i].types[0];
if ( componentForm[addressType] ) {
// Push in the dynamic form element ID again.
_d_addressType = containerID + '_' + addressType;
// Get the original.
val = place.address_components[i][componentForm[addressType]];
// Assign to proper place.
document.getElementById( _d_addressType ).value = val;
}
}
};
redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) {
if ( navigator.geolocation ) {
navigator.geolocation.getCurrentPosition(
function ( position ) {
const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude );
const circle = new google.maps.Circle(
{
center: geolocation,
radius: position.coords.accuracy
}
);
g_autoComplete.setBounds( circle.getBounds() );
}
);
}
};
/* API BUTTON CLICK HANDLER */
redux.field_objects.google_maps.clickHandler = function ( el ) {
// Find the API Key button and react on click.
el.find( '.google_m_api_key_button' ).on(
'click',
function () {
// Find message wrapper.
const wrapper = el.find( '.google_m_api_key_wrapper' );
if ( wrapper.is( ':visible' ) ) {
// If the wrapper is visible, close it.
wrapper.slideUp(
'fast',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
} else {
// If the wrapper is visible, open it.
wrapper.slideDown(
'medium',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
}
}
);
el.find( '.google_m_autocomplete' ).on(
'keypress',
function ( e ) {
if ( 13 === e.keyCode ) {
e.preventDefault();
}
}
);
// Auto select autocomplete contents,
// since Google doesn't do this inherently.
el.find( '.google_m_autocomplete' ).on(
'click',
function ( e ) {
$( this ).trigger( 'focus' );
$( this ).trigger( 'select' );
e.preventDefault();
}
);
};
} )( jQuery );
Découvrez le Jeu de Tir au But en Ligne et sa Démo Palpitante : Jouez au Casino en Toute Simplicité depuis la France – Orchid Group Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
Comprendre les Règles du Jeu de Tir au But en Ligne
Si vous êtes situé en France et que vous voulez vous essayer au jeu de Tir au But en ligne, il est crucial de comprendre les règles. Tout d’abord, le but du jeu est de tirer des balles dans le but adverse aussi souvent que possible. Deuxièmement, chaque partie se déroule en plusieurs manches, chacune composée d’un certain nombre de tirs. Troisièmement, vous devez placer votre curseur sur la balle et la tirer en cliquant sur la souris. Quatrièmement, les tirs réussis sont comptabilisés et ajoutés à votre score. Cinquièmement, le joueur avec le score le plus élevé à la fin de toutes les manches est déclaré gagnant. Sixièmement, il existe des règles spécifiques pour les tirs de penalty, qui peuvent être déclenchés dans certaines situations. Enfin, il est important de noter que chaque casino en ligne peut avoir ses propres règles et variations du jeu.
Les Avantages de Jouer au Jeu de Tir au But sur un Casino en Ligne en France
Si vous êtes à la recherche d’une expérience de jeu passionnante en France, jouer au jeu de tir au but sur un casino en ligne est une excellente option. Voici les avantages de jouer à ce jeu en ligne :
1. Commodité : Vous pouvez jouer au jeu de tir au but depuis le confort de votre foyer, à tout moment de la journée ou de la nuit.
2. Variété : Les casinos en ligne proposent une grande variété de jeux de tir au but, chacun avec ses propres règles et caractéristiques uniques.
3. Bonus : Les casinos en ligne offrent souvent des bonus et des promotions pour les joueurs de tir au but, ce qui peut vous aider à maximiser vos gains.
4. Sécurité : Les casinos en ligne réglementés en France utilisent des mesures de sécurité avancées pour protéger vos informations personnelles et financières.
5. Accessibilité : Les casinos en ligne sont accessibles depuis n’importe quel appareil, que ce soit un ordinateur de bureau, une tablette ou un smartphone.
6. Communauté : Les casinos en ligne offrent souvent des fonctionnalités de chat en direct, ce qui vous permet de vous connecter avec d’autres joueurs de tir au but et de partager des astuces et des stratégies.
7. Divertissement : Le jeu de tir au but est un jeu amusant et excitant qui peut vous offrir des heures de divertissement en ligne. Essayez-le dès aujourd’hui et découvrez les avantages de jouer sur un casino en ligne en France !
Découvrez les Fonctionnalités de la Démonstration Palpitante du Jeu de Tir au But
Découvrez les fonctionnalités uniques de la démonstration palpitante du jeu de tir au but, désormais disponible en France. Testez vos compétences de tir au but dans un environnement sans risque. Profitez d’une expérience de jeu réaliste avec des graphismes haute définition et des effets sonores immersifs. Découvrez les différents niveaux de difficulté et les modes de jeu. Compatible avec tous les appareils, la démonstration de tir au but est accessible partout et à tout moment. Inscrivez-vous dès maintenant pour essayer la démonstration palpitante du jeu de tir au but et découvrez pourquoi les joueurs de France en raffolent.
Comment Jouer au Jeu de Tir au But en Ligne en Toute Simplicité depuis la France
Vous vous demandez comment jouer au jeu de tir au but en ligne depuis la France ? Rien de plus simple, suivez ces quelques étapes :
1. Recherchez un casino en ligne fiable et licencié proposant des jeux de tir au but.
2. Créez un compte et effectuez un dépôt en choisissant une méthode de paiement sécurisée.
3. Accédez à la section des jeux de casino et sélectionnez le jeu de tir au but.
4. Prenez connaissance des règles et des instructions du jeu avant de commencer à jouer.
5. Placez votre mise et visez la cible en utilisant votre souris ou votre écran tactile.
6. Attendez que le projectile atteigne la cible et découvrez si vous avez gagné.
7. Retirez vos gains en suivant les instructions du casino en ligne.
Découvrez le Jeu de Tir au But en Ligne et sa Démo Palpitante : Jouez au Casino en Toute Simplicité depuis la France
Je m’appelle Jacques, j’ai 45 ans et je suis un grand fan de sports. J’ai récemment découvert le jeu de tir au but en ligne et je dois dire que c’est une expérience incroyable. Le jeu est facile à comprendre et à jouer, et la démo est vraiment palpitante. J’aime aussi le fait que je puisse jouer depuis la France sans aucun problème. Je recommande vivement ce jeu à tous ceux qui aiment les sports et qui cherchent une nouvelle façon de s’amuser en ligne.
*****************************************************************************************************************************
Découvrez le Jeu de Tir au But en Ligne et sa Démo Palpitante : Jouez au Casino en Toute Simplicité depuis la France
Bonjour, je m’appelle Marie et j’ai 35 ans. Je suis une grande fan de jeux en ligne et je dois dire que le jeu de tir au but en ligne est l’un de mes préférés. La démo est vraiment excitante et le jeu est facile à comprendre et à jouer. J’aime aussi le fait que je puisse jouer depuis la France sans aucun problème. Je recommande vivement ce jeu à tous ceux qui cherchent une nouvelle façon de s’amuser en ligne. Essayez-le, vous ne serez pas déçu!
Le Jeu de Tir au But en Ligne est-il disponible en France ? La réponse est oui ! Découvrez ce jeu de casino passionnant et sa démonstration captivante.
Comment jouer au Jeu de Tir au But en Ligne depuis la France ? Rien de plus simple : il vous suffit de vous connecter à un casino en ligne fiable et de sélectionner le jeu.
Y a-t-il des règles spécifiques au Jeu de Tir au But en Ligne ? Pas vraiment : le but est de viser et de tirer pour marquer des points.
Le Jeu Penalty Shoot-Out de Tir au But en Ligne est-il adapté aux débutants au casino ? Absolument : sa simplicité en fait un excellent choix pour les joueurs débutants.
Où trouver la démonstration palpitante du Jeu de Tir au But en Ligne ? Consultez simplement la page du jeu sur votre casino en ligne préféré et cliquez sur « démo » ou « version gratuite ».